﻿Imports DevComponents.DotNetBar
Imports TNCDAL
Imports TNCBAL

Public Class ucFile
    Private _ucFileManagement As ucFileManagement
    Private _ucFileInformation As ucFileInformation
    Private _ucFileCont As ucFileContainer
    Private _ucFileMBL As ucFileMBL
    Private _ucFileHBL As ucFileHBL

    Private _objFileController As New FileController
    Private _ucFileContTransport As ucFileContTransport

    '---------THANH: sửa ngày 24/10/2013
    'mục đích: thêm ucContainer và ucSellingRate
    Private _ucContainerInfor As ucContainers
    Private _ucBuyingSelling As ucBuyingSelling
    '---------hết phần Thanh thêm ngày 24/10/2013
    '---------QUYEN: sửa ngày 18/10
    Private _ucOnepaymentVoucher As ucOnePaymentVoucher
    Private _ucBuyingRate As ucBuyingRate
    '---------
    Private _enumFile As enumFILE

    Private _ucMBL_Voyage_FreightTarrif As ucMBL_Voyage_FreightTariff
    Private _ucShipmentDetail As ucShipmentDetail

    Private _objFile As tblFile

    Public Property ObjFile() As tblFile
        Get
            Return _objFile
        End Get
        Set(ByVal value As tblFile)
            _objFile = value
        End Set
    End Property

    Public Sub New(ByRef objFileManagement As ucFileManagement, ByVal eFILE As enumFILE)
        InitializeComponent()
        _enumFile = eFILE
        _ucFileManagement = objFileManagement

    End Sub

    Public Sub New(ByRef objFileManagement As ucFileManagement, ByVal id_file As Integer)
        InitializeComponent()
        'Load thông tin File
        FillFormHeader(id_file)
        _enumFile = _objFile.IsExport
        _ucFileManagement = objFileManagement
        'InitFormHeader()
    End Sub

    Private Sub ucFile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
        'Load form GeneralInformation
        buttonItemGeneralInfo_Click(Nothing, Nothing)
    End Sub

    ' ''' <summary>
    ' ''' Load thông tin FILE vào form header
    ' ''' </summary>
    ' ''' <remarks></remarks>
    'Public Sub InitFormHeader()
    '    txtFileNo.ReadOnly = True
    '    txtCustomer.ReadOnly = True
    '    txtCompany.ReadOnly = True
    '    txtForeignCompany.ReadOnly = True
    '    txtTerm.ReadOnly = True
    '    GroupBoxD2D.Enabled = False
    '    GroupBoxFCL.Enabled = False

    '    'Nếu là hàng xuất
    '    If _enumFile Then
    '        lblShipper.Text = "Shipper"
    '        lblConsignee.Text = "Consignee"
    '    Else ' Nếu là hàng nhập
    '        'Đảo lại vai trò
    '        lblShipper.Text = "Consignee"
    '        lblConsignee.Text = "Shipper"
    '    End If

    '    If _objFile Is Nothing Then
    '        lblCreatedBy.Text = GeneralClassBAL._User.UserName
    '        lblCreatedDate.Text = DateTime.Now.ToString()
    '    End If
    'End Sub

    ''' <summary>
    ''' Cập nhật lại title của tab sau khi thêm mới hoặc cập nhật
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub UpdateTitle()
        _ucFileManagement.btnRefresh.PerformClick()
        'Sửa lại title của DockContainerItem (trường hợp sau khi thêm mới xong)
        If Me.ParentForm IsNot Nothing Then
            Dim objFrmMain As frmMain = CType(Me.ParentForm, frmMain)

            If _objFile.IsExport Then
                objFrmMain.UpdateDocContainerItem("ExportFile" + _objFile.FileNo.ToString(), "Export File " + _objFile.FileNo.ToString())
                'objFrmMain.Bar2.SelectedDockContainerItem.Text = "Export File " + _objFile.FileNo.ToString()
                'objFrmMain.Bar2.SelectedDockContainerItem.Name = "ExportFile" + _objFile.FileNo
            Else
                objFrmMain.UpdateDocContainerItem("ImportFile" + _objFile.FileNo.ToString(), "Import File " + _objFile.FileNo.ToString())
                'objFrmMain.Bar2.SelectedDockContainerItem.Text = "Import File " + _objFile.FileNo.ToString()
                'objFrmMain.Bar2.SelectedDockContainerItem.Name = "ImportFile" + _objFile.FileNo
            End If
        End If
    End Sub

    ''' <summary>
    ''' Load thông tin FILE vào form header
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub FillFormHeader(ByVal id_file As Integer)
        GeneralClassDAL.dc = New TanNamChinhDataContext()
        _objFileController = New FileController()

        _objFile = _objFileController.SelectRecordById(id_file)

        Dim isEnable As Boolean = False

        If _objFile IsNot Nothing Then
            'Khi tạo mới lô hàng thì disable các chức năng này
            isEnable = True

            With _objFile
                ''Nếu tạo từ booking thì FileNo sẽ là Nothing
                'txtFileNo.Text = IIf(.FileNo Is Nothing, "", .FileNo)
                ''Nếu tạo từ booking thì Term sẽ là Nothing
                'txtTerm.Text = IIf(.Term Is Nothing, "", .Term)

                'txtCustomer.Text = .tblCustomer.CustomerName
                'txtCompany.Text = .tblCompany.Name
                'txtForeignCompany.Text = .tblForeignCompany.Name
                'rbtnD2D.Checked = .IsD2D
                'rbtnCY2CY.Checked = Not rbtnD2D.Checked
                'rbtnFCL.Checked = .IsFCL
                'rbtnLCL.Checked = Not rbtnLCL.Checked

                'Nếu tạo từ booking thì User tạo File sẽ là Nothing
                If .tblUser Is Nothing Then
                    .tblUser = GeneralClassBAL._User
                End If
                lblCreatedBy.Text = .tblUser.UserName
                'lblCreatedBy.Text = IIf(.tblUser Is Nothing, GeneralClassBAL._User.UserName, .tblUser.UserName)

                'Nếu tạo từ booking thì .CreatedDate sẽ là Nothing
                If .CreatedDate Is Nothing Then
                    .CreatedDate = DateTime.Now.Date
                End If
                lblCreatedDate.Text = .CreatedDate.Value.ToString()
                'lblCreatedDate.Text = IIf(.CreatedDate.Value.ToString() Is Nothing, DateTime.Now.ToString(), .CreatedDate.Value.ToString())
            End With

            'If _objFile.tblFileMBLs.Count > 0 Then
            '    'Nếu MBL No đã có
            '    If _objFile.tblFileMBLs(0).tblMBL.MBLNo <> "" Then
            '        isEnable = True
            '    End If
            'End If
        End If

        'Nếu là thêm mới thì disable ngược lại enable
        buttonItemMBL.Enabled = isEnable
        buttonItemHBL.Enabled = isEnable
        'buttonItemBuying.Enabled = isEnable
        buttonItemSelling.Enabled = isEnable
        buttonItemContainer.Enabled = isEnable
        buttonItemTransport.Enabled = isEnable
        btnFreightTariff.Enabled = isEnable
        btnShipmentDetail.Enabled = isEnable
    End Sub

    Private Sub LoadUserControl(ByVal uc As System.Windows.Forms.UserControl)
        'Clear các form đã load
        PanelExUserControl.Controls.Clear()
        'Load form mới
        uc.Dock = DockStyle.Fill
        PanelExUserControl.Controls.Add(uc)
    End Sub

    'Private Sub buttonItemMBL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemMBL.Click
    '    'Kiểm tra nếu chưa load usercontrol này thì load lên
    '    If Not PanelExUserControl.Controls.Contains(_ucFileMBL) Then
    '        ExpandablePanelHeader.Visible = True
    '        If _ucFileMBL Is Nothing Then
    '            _ucFileMBL = New ucFileMBL(_objFile)
    '        End If
    '        LoadUserControl(_ucFileMBL)
    '    End If
    'End Sub

    Private Sub buttonItemGeneralInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemGeneralInfo.Click
        'Kiểm tra nếu chưa load usercontrol này thì load lên
        If Not PanelExUserControl.Controls.Contains(_ucFileInformation) Then
            ExpandablePanelHeader.Visible = False
            If _ucFileInformation Is Nothing Then
                _ucFileInformation = New ucFileInformation(Me, _enumFile)
            End If
            LoadUserControl(_ucFileInformation)
            '** Dùng reload riêng để tránh trường hợp sau khi add user control vào, combobox sẽ anchor theo form.
            'Khi đó, text trong combobox sẽ bị tô theo dạng Selection Text
            _ucFileInformation.ReloadForm()
        End If
    End Sub

    Private Sub buttonItemContainer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemContainer.Click
        'Kiểm tra nếu chưa load usercontrol này thì load lên
        '---------THANH sửa ngày 3/10/2013
        If Not PanelExUserControl.Controls.Contains(_ucContainerInfor) Then
            ExpandablePanelHeader.Visible = False
            '--------PHẦN NÀY CỦA ANH TUẤN, xin phép khoá lại chút-------------
            ''If _ucFileCont Is Nothing Then
            ''    _ucFileCont = New ucFileContainer(_objFile)
            ''End If
            ''LoadUserControl(_ucFileCont)
            '---------hết phần của anh Tuấn---------------------------------
            '-----PHẦN NÀY THANH THÊM VÀO----------------------------
            'If _ucContainerInfor Is Nothing Then
            _ucContainerInfor = New ucContainers(_objFile.ID_File)
            'Else
            '    _ucContainerInfor.BindContainerGrid()
            'End If
            LoadUserControl(_ucContainerInfor)
            '-------------HẾT PHẦN THANH SỬA 03/10/2013---------------
        End If
    End Sub

    Private Sub buttonItemHBL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemHBL.Click
        'Kiểm tra nếu chưa load usercontrol này thì load lên
        If Not PanelExUserControl.Controls.Contains(_ucFileHBL) Then
            ExpandablePanelHeader.Visible = False
            If _ucFileHBL Is Nothing Then
                _ucFileHBL = New ucFileHBL(_objFile)
            End If
            LoadUserControl(_ucFileHBL)
            'Dùng reload riêng để tránh trường hợp combobox kéo dãn theo form (sau khi add user control vào) bị chọn text dạng Selection Text
            _ucFileHBL.ReloadForm(_objFile)
        End If
    End Sub

    Private Sub buttonItemTransport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemTransport.Click
        'Kiểm tra nếu chưa load usercontrol này thì load lên
        If Not PanelExUserControl.Controls.Contains(_ucFileContTransport) Then
            ExpandablePanelHeader.Visible = False
            If _ucFileContTransport Is Nothing Then
                _ucFileContTransport = New ucFileContTransport(_objFile)
            Else
                _ucFileContTransport.BindingDataGridView(_objFile)
            End If
            LoadUserControl(_ucFileContTransport)
        End If
    End Sub

    Private Sub buttonItemSelling_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonItemSelling.Click
        '-----PHẦN NÀY THANH SỬA 24/10/2013----------------------------
        ' Quyên thêm phần kiểm tra bảng cước có chưa để tính phí

        Dim mBR As New MBuyingRate
        If mBR.ExistCuocCont(_objFile.ID_File) = True Then
            'Đã có bảng cước

        Else
            'Chưa có bảng cước thì quay lại
            MessageBox.Show("Input Freight Tariff before calculate Fee")
            btnFreightTariff_Click(sender, e)
            Return
        End If

        If Not PanelExUserControl.Controls.Contains(_ucBuyingSelling) Then

            ExpandablePanelHeader.Visible = False
            'If _ucBuyingSelling Is Nothing Then
            _ucBuyingSelling = New ucBuyingSelling(_objFile.ID_File)
            'End If
            LoadUserControl(_ucBuyingSelling)
        End If
        '-------------HẾT PHẦN THANH SỬA 24/10/2013---------------
    End Sub


    Private Sub btnPaymentVoucher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ''-----PHẦN NÀY QUYÊN THÊM VÀO 18/10/2013----------------------------
        'If Not PanelExUserControl.Controls.Contains(_ucOnepaymentVoucher) Then
        '    ExpandablePanelHeader.Visible = True
        '    If _ucOnepaymentVoucher Is Nothing Then
        '        _ucOnepaymentVoucher = New ucOnePaymentVoucher(_objFile.ID_File, 0)
        '    End If
        '    LoadUserControl(_ucOnepaymentVoucher)
        'End If
        ''-------------HẾT PHẦN THANH SỬA 03/10/2013---------------
    End Sub

    'Private Sub buttonItemBuying_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '    '-----PHẦN NÀY QUYÊN THÊM VÀO 18/10/2013----------------------------
    '    If Not PanelExUserControl.Controls.Contains(_ucBuyingRate) Then
    '        ExpandablePanelHeader.Visible = True
    '        If _ucBuyingRate Is Nothing Then
    '            _ucBuyingRate = New ucBuyingRate(_objFile.ID_File)
    '        End If
    '        LoadUserControl(_ucBuyingRate)
    '    End If
    '    '-------------HẾT PHẦN THANH SỬA 03/10/2013---------------
    'End Sub

    'Private Sub buttonItemBooking_Click(sender As System.Object, e As System.EventArgs)

    'End Sub

    Private Sub btnFreightTariff_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFreightTariff.Click
        '-----PHẦN NÀY SỸ THÊM VÀO 21/11/2013----------------------------
        If Not PanelExUserControl.Controls.Contains(_ucMBL_Voyage_FreightTarrif) Then
            ExpandablePanelHeader.Visible = False
            'If _ucMBL_Voyage_FreightTarrif Is Nothing Then
            _ucMBL_Voyage_FreightTarrif = New ucMBL_Voyage_FreightTariff(_objFile.ID_File)
            'End If
            LoadUserControl(_ucMBL_Voyage_FreightTarrif)
        End If
        '-------------HẾT PHẦN SỸ SỬA 03/10/2013---------------
    End Sub

    Private Sub btnShipmentDetail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShipmentDetail.Click
        '-----PHẦN NÀY SỸ THÊM VÀO 10/06/2014----------------------------
        If Not PanelExUserControl.Controls.Contains(_ucShipmentDetail) Then
            ExpandablePanelHeader.Visible = False
            'If _ucMBL_Voyage_FreightTarrif Is Nothing Then
            _ucShipmentDetail = New ucShipmentDetail(_objFile.ID_File)
            'End If
            LoadUserControl(_ucShipmentDetail)
        End If
        '-------------HẾT PHẦN SỸ SỬA 10/06/2014---------------
    End Sub
End Class
